Electronic data systems and electronic processing systems often utilize data buffers to temporarily store information. The information stored in a buffer is typically of a transient nature and is updated or otherwise consumed in short order.
An example of transient data that can be buffered is pixel data for a display image. A display image is typically updated on a periodic basis and the information for any particular pixel can be updated at the refresh rate of the display. Another example is processed data that is an intermediate result. By definition, intermediate results generated by a first process are used as inputs to a second process. The intermediate result data can be stored in a buffer and accessed by the second process. The intermediate results typically have a transient duration that is based on the ability of the second process to access and further process the intermediate results.
However, in some instances, a buffer may need to maintain certain contents for more than a transient period of time. Indeed, in some instances the buffer may need to store some of its contents for an arbitrarily long duration.
Long term content storage is contrary to the typical buffer implementation. A system configuration may rely on the buffer storing only transient contents that are quickly refreshed or otherwise consumed.
A system can allocate dedicated memory for permanent storage of buffer contents that need to be maintained for an arbitrarily long period of time. However, dedicating resources for storage of buffer contents is typically inefficient. The instances where buffer contents need to be stored indefinitely may be rare, but unpredictable. Thus, it is difficult to properly size the dedicated storage. Furthermore, the dedicated storage may seldom see use, and thus may present a wasteful allocation of resources.